﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using coffeeshop.Models;

namespace coffeeshop.Forms
{
    public partial class frmConfig : Form
    {
        public frmConfig()
        {
            InitializeComponent();

            LoadValues();
        }

        private void LoadValues()
        { 
            // Số lượng bàn của quán.
            txtTables.Text = Config.GetNumberOfTables().ToString();

            // Số phần trăm giảm giá, cho tất cả các bàn.
            // Nếu số này bằng 0 thì không giảm giá.
            // Nếu số này lớn hơn 0 thì giảm giá cho tất cả các bàn.
            txtPromtion.Text = Config.GetPromotionAmount().ToString();

            // Load text cảm ơn khi in phiếu tính tiền
            txtName.Text = Config.ShopName;

            // Load hình Logo quán
            txtLogo.Text = Config.ShopLogo;
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!ValuesValidated())
                return;
            try
            {
                Config.SetNumberOfTables(int.Parse(txtTables.Text.Trim()));
                Config.SetPromotionAmount(float.Parse(txtPromtion.Text.Trim()));

                Config.ShopName = txtName.Text.Trim();
                Config.ShopLogo = txtLogo.Text.Trim();
                Config.ThankYouText = txtThankYou.Text.Trim();
            }
            catch
            {
                MessageBox.Show("CÓ LỖI !!! Lưu dữ liệu KHÔNG thành công");
                return;
            }

            MessageBox.Show("Lưu dữ liệu thành công");

            // TODO: LOAD CÁC FORM KHÁC ĐỂ PHÙ HỢP VỚI VALUE MỚI (SỐ LƯỢNG BÀN..)
        }

        private bool ValuesValidated()
        {
            if (string.IsNullOrEmpty(txtName.Text))
            {
                MessageBox.Show("Bạn chưa nhập tên quán");
                return false;
            }

            if (string.IsNullOrEmpty(txtLogo.Text))
            { 
                // co thể không cần logo
                // 
                // TODO:check file logo, check file ext, check file size, check file dimension later
            }

            if (string.IsNullOrEmpty(txtThankYou.Text))
            {
                // co thể không cần THIẾT LẬP
                // TODO:check nếu dòng text quá dài, ảnh hưởng tới việc in. xử lý nếu text quá dài thì xuống hàng
            }

            if (string.IsNullOrEmpty(txtTables.Text))
            {
                MessageBox.Show("Số lượng bàn chưa điền");
                return false;
            }
            int _numberOfTables;
            if (!int.TryParse(txtTables.Text.Trim(), out _numberOfTables))
            {
                MessageBox.Show("Số lượng bàn chưa đúng. Bạn cần nhập số nguyên");
                return false;
            }

            int _maxNumberOfTables = OrderTable.CountActiveTable().Count;
            if (_numberOfTables < 1 || _numberOfTables > _maxNumberOfTables)
            {
                MessageBox.Show(string.Format("Số lượng bàn chưa đúng. Bạn cần nhập số từ 1 đến {0}", _maxNumberOfTables));
                return false;
            }

            if (string.IsNullOrEmpty(txtPromtion.Text))
            {
                MessageBox.Show("Phần trăm giảm giá chưa điền");
                return false;
            }

            float _promotion;
            if (!float.TryParse(txtPromtion.Text.Trim(), out _promotion) || _promotion < 0 || _promotion > 100)
            {
                MessageBox.Show("Phần trăm giảm giá chưa đúng. Bạn cần nhập số từ 0 đến 100");
                return false;
            }

            return true;
        }

        
    }
}
